package com.h3c.ptability.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.h3c.ptability.bo.ElectronicSignBO;
import com.h3c.ptability.dto.electronicSign.PtEsignSceneDTO;
import com.h3c.ptability.dto.electronicSign.PtEsignSceneTemplateDTO;
import com.h3c.ptability.entity.PtEsignScene;

import java.util.HashMap;
import java.util.List;

/**
 * 电子签实际场景定义接口类
 *
 * @author chenyifan
 * @since 2022-05-19 10:59:58
 */
public interface IPtEsignSceneService extends IService<PtEsignScene> {

    /**
     * 根据场景类型和应用id获取可选择的场景
     *
     * @param sceneType 场景类型
     * @param appId     应用id
     * @return
     */
    List<PtEsignScene> getSceneByTypeAndAppId(Integer sceneType, String appId);

    /**
     * 带条件分页查询场景
     *
     * @param page     分页
     * @param sceneDTO 查询条件
     * @return
     */
    IPage<PtEsignSceneDTO> pageEsignScene(IPage<PtEsignScene> page, PtEsignSceneDTO sceneDTO);

    /**
     * 通过id查询SignDto
     * @param dto
     * @return
     */
    PtEsignSceneDTO selectSignById(PtEsignSceneDTO dto);

    /**
     * 编辑scene
     * @param dto scene
     * @return 更新条数
     */
    Boolean updateByEsignScene(PtEsignSceneDTO dto);

    /**
     * 删除esignScene
     * @param dto dto
     * @return
     */
    Boolean deleteEsignScene(PtEsignSceneDTO dto);

    /**
     * 匹配场景预览需要签署的文件
     * @param electronicSignBO
     * @return
     */
    HashMap<String, List<PtEsignSceneTemplateDTO>> matchSceneFiles(ElectronicSignBO electronicSignBO);

    /**
     * 查询签署场景列表
     * @param appId
     * @param sceneType
     * @return
     */
    List<PtEsignScene> getEsignSceneList(String appId, Integer sceneType);
}

